shortcuts: Ignore consumed modifiers for mnemonics
authorMatthias Clasen <mclasen@redhat.com>
Sun, 2 May 2021 22:33:44 +0000 (18:33 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 2 May 2021 22:33:44 +0000 (18:33 -0400)
This is necessary to make mnemonics like Alt-1 work in
layouts where numeric keys are shifted, like AZERTY.

Fixes: #3912
gtk/gtkshortcutcontroller.c

index cefccf51485a31aa7e751d54a24ab92889268537..8db04d71e6f52d37244ebcd0eb1a9be84076ca59 100644 (file)
@@ -432,9 +432,11 @@ gtk_shortcut_controller_handle_event (GtkEventController *controller,
 
   if (event_type == GDK_KEY_PRESS)
     {
-      GdkModifierType modifiers;
+      GdkModifierType modifiers, consumed_modifiers;
+
       modifiers = gdk_event_get_modifier_state (event);
-      enable_mnemonics = (modifiers & gtk_accelerator_get_default_mod_mask ()) == self->mnemonics_modifiers;
+      consumed_modifiers = gdk_key_event_get_consumed_modifiers (event);
+      enable_mnemonics = (modifiers & ~consumed_modifiers & gtk_accelerator_get_default_mod_mask ()) == self->mnemonics_modifiers;
     }
   else
     {